The development and application of rule engines is one branch of Artificial Intelligence (A.I.), which is a very broad research area that focuses on “making computers think like people.” Broadly speaking, a rule engine processes information by applying rules to data objects (also known as facts). A rule is a logical construct for describing the operations, definitions, conditions, and/or constraints that apply to some predetermined data to achieve a goal. Various types of rule engines have been developed to evaluate and process rules. Conventionally, a rule engine implements a network to process rules and data objects (also referred to as facts), such as a Rete network. A network may include many different types of nodes, including, for example, object-type nodes, alpha nodes, left-input-adapter nodes, eval nodes, join nodes, not nodes, and terminal nodes, etc.
In general, the Rete algorithm describes a way to organize and reason efficiently over facts. The Rete algorithm further allows a conventional rule engine to generate conclusions and trigger actions on the facts according to the rules. Although the Rete algorithm is efficient, the Rete algorithm requires the fact to be defined and available to the conventional rule engine in a pre-defined structure because the conventional rule engine typically supports only a single type or a few types of facts. Thus, the supported type of facts may be herein referred to as the native type of facts of the rule engine. In other words, the use of the rule engine is limited by the requirement that the data of all facts is to be copied into the predefined structure before the rule engine can reason over the data. Moreover, the reverse operation is also required to journalize the results of the reasoning process of the conventional rule engine.
As more and more applications of the rule engine are developed, support of other different types of facts is desired. However, applying the conventional technique above to process facts of different types is cumbersome, and the conventional technique significantly reduces the efficiency of the rule engine as the number of different types of facts increases.